热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

同机|次序_广告业务系统之敏捷交付——“基于Docker容器同机部署”

篇首语:本文由编程笔记#小编为大家整理,主要介绍了广告业务系统之敏捷交付——“基于Docker容器同机部署”相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了广告业务系统 之 敏捷交付 —— “基于 Docker 容器同机部署”相关的知识,希望对你有一定的参考价值。



文章目录


    • 广告业务系统 之 敏捷交付 —— “基于 Docker 容器同机部署”
      • 服务 Docker 构建及部署
        • 代码支持
        • 服务打包&构建
        • 服务部署





广告业务系统 之 敏捷交付 —— “基于 Docker 容器同机部署”


服务 Docker 构建及部署

在 ADX 系统中,全链路涉及 大大小小的微服务 将近 百个。
良好的服务构建和灵活、敏捷的部署能力,是保证广告业务快速交付价值的基石。

在实际生产中, ADX 系统服务为保障高可用、高性能 的同时,最大提升机器利用率。统一施行 以 Docker 容器为主的节点混部模式。


代码支持

值得一提的是,混部模式中,服务之间通信以容器为单位,走本地端口,无网络带宽限制、无网络资源问题、且大幅提升服务链路性能效益。这种部署模式已经在实际应用中得到了充分的肯定。

服务支持 Docker 容器技术的前提是,在实现代码中需要准备相关的部署文件。

.
├── build.sh //服务构建文件
├── docker-compose.yml //容器启动执行文件
└── Dockerfile //镜像构建文件

服务打包&构建

在完成服务功能代码之后,将最新代码上传至 Git Code 库。


CI/CD 平台,将会 Clone 业务代码,并依据其中的 build.sh 及 Dockerfile 分布进行构建 和 镜像打包工作。同时,会将完整的镜像及代码 Push 到专用的远程库之中,后续用于业务服务部署。


服务部署

服务部署前,会在团队分配的机器资源池中,依据现阶段各机器使用率及所属机房、高低配置,挑选合适的服务机器。

服务部署节点遵循 多机房部署、考量容灾、备份、高低同权重 …等等策略。其中重要的一点是,需要依据选出的节点合理的承接即将部署服务的流量规模,尤其需要评估出适量的冗余度,一般在 1.0 左右。【视各自服务场景而定】


CI/CD 平台将依据 代码中的 Docker-dompose.yml 文件进行相对的 部署逻辑。在部署顺序上,有着严格的次序:首先需要启动新服务,完成后再停止旧服务。

这样的次序可以保证服务功能迭代无损变更。

上述的“ 打包-构建-部署 ” 的流程可通过平台动态自主触发的形式进行落地。这样每次 Code 库存在更新,便自动触发流程,完成 “打包-构建”。最终服务功能开发完成,交付时间可压缩至秒级。

灵活、自主的构建、部署能力 使团队在日益竞争加剧的环境下,具备绝对的敏捷优势。



见后续文章!

推荐阅读:
暨 广告、推荐、搜索 三大顶级复杂业务之 “广告业务系统详叙”
广告业务系统 之 承前启后 —— “消息中心”
广告业务系统 之 数据中转站 —— “日志中心-实时服务监控”
广告业务系统 之 数据桥梁 —— “日志中心-曝光数据流转结算”
广告业务系统 之 核心通道 —— “日志中心-s2s监测上报”
广告业务系统 之 辅助决策 —— “ AB 实验平台”
广告业务系统 之 框架沉淀 —— “数据消费型服务框架”
广告业务系统 之 智能保险丝 —— “智能流控”
广告业务系统 之 敏捷交付 —— “基于 Docker 容器同机部署”
广告业务系统 之 业务串联 —— “ PDB - 广告投放【保量保价】”



三行代码搞定 —— 反转链表…
Kafka 高吞吐、高性能核心技术及最佳应用场景…
HTTPS 如何保证数据传输安全 —— TLS 协议…
五分钟搭建基于 Prometheus + Grafana 实时监控系统…


推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • MyBatis错题分析解析及注意事项
    本文对MyBatis的错题进行了分析和解析,同时介绍了使用MyBatis时需要注意的一些事项,如resultMap的使用、SqlSession和SqlSessionFactory的获取方式、动态SQL中的else元素和when元素的使用、resource属性和url属性的配置方式、typeAliases的使用方法等。同时还指出了在属性名与查询字段名不一致时需要使用resultMap进行结果映射,而不能使用resultType。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
author-avatar
手机用户2602939233
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有